let room = {
	number: 23,
}

let meetup = {
	title: 'Conference',
	occupiedBy: [{ name: 'John' }, { name: 'Alice' }],
	place: room,
}

// 循环引用
room.occupiedBy = meetup
meetup.self = meetup

// * 1. 在序列化时，replacer 函数会检测到 meetup.self 属性的值等于 meetup 对象本身，因此返回 undefined，导致该属性在最终的 JSON 字符串中不存在。
console.log(
	JSON.stringify(meetup, function replacer(key, value) {
		return value == meetup ? undefined : value
	})
) // undefined

// * 2. 判断 key=="" 以排除第一个调用时 value 是 meetup 的情况。
console.log(
	JSON.stringify(meetup, function replacer(key, value) {
		return key != '' && value == meetup ? undefined : value
	})
)

/* 结果应该是：
{
  "title":"Conference",
  "occupiedBy":[{"name":"John"},{"name":"Alice"}],
  "place":{"number":23}
}
*/
